<?xml version="1.0" encoding="UTF-8"?>
<html>
    <head>
        <meta name="”Keywords”" content="”conférence,J2EE,objet,direct,Java,Conférence,Java" ee="EE" conference="conference" object="object" direct="direct" articles="articles" certification="certification" sun="sun" java="java" solaris="solaris" essentiels="essentiels" tips="tips" astuces="astuces" codes="codes" exemple="exemple" tutorial="tutorial" developpement="developpement" jsp="jsp" servlet="servlet" jdbc="jdbc" jdo="jdo" j2se="j2se" j2ee="j2ee" laboratoire="laboratoire" />
        <link type="text/css" rel="stylesheet" href="./css/template.css" />
        <link type="text/css" rel="stylesheet" href="./css/SyntaxHighlighter.css" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Conférence Objet Direct</title>
        <script language="javascript" src="./js/shInit.js" />
        <script language="javascript" src="./js/shCore.js" />
        <script language="javascript" src="./js/shBrushCpp.js" />
        <script language="javascript" src="./js/shBrushCSharp.js" />
        <script language="javascript" src="./js/shBrushCss.js" />
        <script language="javascript" src="./js/shBrushDelphi.js" />
        <script language="javascript" src="./js/shBrushJava.js" />
        <script language="javascript" src="./js/shBrushJScript.js" />
        <script language="javascript" src="./js/shBrushPhp.js" />
        <script language="javascript" src="./js/shBrushPython.js" />
        <script language="javascript" src="./js/shBrushRuby.js" />
        <script language="javascript" src="./js/shBrushSql.js" />
        <script language="javascript" src="./js/shBrushVb.js" />
        <script language="javascript" src="./js/shBrushXml.js" />
        <author>Maxime Vialette</author>
    </head>
    <body>
        <div class="chapter">
            <h2>1. Informations sur la conférence</h2>
            <ul>
                <li>Date : 07/12/2004</li>
                <li>Horaire : 14:00 à 17:00</li>
                <li>Société concernée : Objet Direct</li>
                <li>Intitulé de la conférence : Architectures Java</li>
                <li>Public concerné : Directeur de service informatique/Chef de projet</li>
                <li>Nombre approximatif de personnes à la conférence : 60</li>
                <li>Nombre de personnes du laboratoire : 2 (Maxime VIALETTE &amp;  Renaud ROUSTANG)</li>
                <li>Nombre de personnes de SUPINFO : 1 (Ounissa BENYATTOU)</li>
                <li>Nombre d’intervenants : 1</li>
                <li>Nom des intervenants : Alexis AGAHI</li>
            </ul>
        </div>
        <div class="chapter">
            <h2>2. Présentation de la société</h2>
            <p>Objet Direct est une société de conseil et de service, filiale du HOMSYS Group, spécialisée dans les technologies objet. Créée en 1998, Objet Direct oeuvre pour des clients tels que :</p>
            <ul>
                <li>Bouygues</li>
                <li>L'OREAL</li>
                <li>SNECMA</li>
                <li>Chronopost</li>
                <li>France Télécom</li>
                <li>Nortel</li>
                <li>...</li>
            </ul>
            <p>HOMSYS fait autant du conseil que du développement en informatique décisionnelle, business intelligence, CRM, KM, portails et intranets d'entreprise. Objet Direct se spécialise dans le conseil, l'architecture, le développement et la formation objet et Internet.
				HOMSYS a une implantation nationale et est organisé en structures par pôles d’expertise :</p>
            <ul>
                <li>Paris</li>
                <li>Rennes</li>
                <li>Bordeaux</li>
                <li>Toulouse</li>
                <li>Lyon</li>
                <li>Grenoble</li>
                <li>Marseille</li>
            </ul>
        </div>
        <div class="chapter">
            <h2>3. Contenu de la conférence</h2>
            <div class="subChapter">
                <h3>3.1. Les technologies employées</h3>
                <p>Il existe de nombreux concepts qui peuvent être utilisés lors de la définition de l’architecture à adopter. Parmi tous les concepts disponibles, Objet Direct s’oriente vers les suivants :</p>
                <ul>
                    <li>UML, UP (Unified Process), XP (eXtreme Programming)</li>
                    <li>Transition du cycle en V vers l'itératif (UP et XP) avec UML</li>
                    <li>C++, Java, .NET, Serveur d'application J2EE</li>
                    <li>Intégration et partage d'applications : XML, XSL, Web Services, ...</li>
                </ul>
                <p>
                    Lors de la définition et du choix de l’architecture d’une application, une analogie avec le travail dans le bâtiment peut souvent être faite car beaucoup de concepts sont communs.
					Il est très important lors de la découpe de l’application en
                    <strong>n-tiers</strong>
                    que la couche de présentation n'accède jamais aux objets métiers sans passer par la couche service, c’est un concept primordial.
                </p>
            </div>
            <div class="subChapter">
                <h3>3.2. D.OM (Direct Object Modeler)</h3>
                <p>
                    Objet Direct utilise également un outil de simulation UML développé pour ses besoins.
					Pour des applications adaptées aux besoins utilisateurs,
                    <strong>D.OM</strong>
                    permet de valider des modèles UML par génération automatique de prototypes fonctionnels.
					Cet outil permet donc de créer par exemple des maquettes directement à partir d’un diagramme de classe. Cela permet de visualiser de manière très rapide les données pouvant être nécessaires dans le contenu d’une application à développer pour un client.
					La conception peut elle-même être réalisée à l’aide de D.OM ou d’un autre outil utilisant le formalisme UML, par exemple Rational Rose.
					Les prototypes générés par D.OM sont de véritables applications, dotées d’une interface homme-machine et permettant de gérer des données et des jeux d’essais. Les utilisateurs peuvent ainsi, durant la phase de conception, tester directement les fonctionnalités de leur application.
                </p>
            </div>
            <div class="subChapter">
                <h3>3.3. Les architectures possibles</h3>
                <p>Il existe différentes dimensions d’architecture informatique :</p>
                <ul>
                    <li>
                        <strong>L’architecture logicielle</strong>
                        consiste à choisir et organiser les différentes technologies de l’application.
                    </li>
                    <li>
                        <strong>L’architecture fonctionnelle</strong>
                        consiste à identifier, cartographier et optimiser les fonctions de l’application
                    </li>
                    <li>
                        <strong>L’architecture technique</strong>
                        consiste à définir l’infrastructure qui va héberger l’application.
                    </li>
                </ul>
                <p>Lors du développement d’applications importantes, un découpage en couches est nécessaire et connu de tous. Cependant ce découpage n’est pas toujours réaliste et suffisant, c’est pour cela qu’un découpage en niveaux au sein d’une même couche est souvent utile.
					Les niveaux suivants sont les plus courants :</p>
                <ul>
                    <li>Accès distant</li>
                    <li>Montée en charge</li>
                    <li>Concurrence</li>
                    <li>Transaction</li>
                    <li>Sécurité</li>
                </ul>
                <p>Les Design Patterns sont employés au sein d’un niveau précis pour une couche donnée.
					Tout le monde connaît le MVC (Modèle Vue Contrôleur) mais peu de gens l’utilisent correctement. Pour cela le MVC2 a été mis en place en reprenant les concepts du MVC et en y ajoutant quelques subtilités.
					Rappelons également le projet open source développé par la fondation Apache : Struts.
					C’est un framework qui implémente le modèle MVC pour les composants Web Java. Il fournit des services :</p>
                <ul>
                    <li>Une servlet contrôleur et un « framework MVC »</li>
                    <li>Des bibliothèques de balises JSP</li>
                    <li>L’internationalisation des pages</li>
                    <li>Un service d’agrégation de pages</li>
                </ul>
                <p>L’implémentation de Struts dans les solutions d’entreprise est très courante, une nouvelle norme Struts 2.0 propose une évolution et s’emploie avec un nouveau plugin intégré à Eclipse.</p>
            </div>
            <div class="subChapter">
                <h3>3.4. L’approche orientée page contre l’approche orientée composant</h3>
                <p>Dans les frameworks graphiques (SWING), on développe par assemblage de composants.
					Le composant contient à la fois :</p>
                <ul>
                    <li>La description de l’interface</li>
                    <li>Le déclenchement de traitements rattachés à des évènements</li>
                </ul>
                <p>Pourquoi ne pas reprendre la même approche pour le Web en disant qu’une page contient :</p>
                <ul>
                    <li>La description de l’interface</li>
                    <li>Le déclenchement des traitements</li>
                </ul>
                <p>Depuis leur version finale (1.0) en avril 2004, les JSF (Java Server Faces) s’emploient de plus en plus. Cette solution permet de créer des Web Forms à la manière de Microsoft et Visual Studio en utilisant le principe de Backing Bean.
					Les listeners permettent de lier un bean à une page JSP. Leur emploi est donc peu à peu délaissé au profit des handlers d’évènements se situant directement sur un bean.
					Les JSF peuvent être totalement intégrées à un outil de WYSIWYG comme le proposent Sun Java Studio Creator, IBM WebSphere Studio Application Developper, …</p>
            </div>
            <div class="subChapter">
                <h3>3.5. Les solutions employées</h3>
                <ul>
                    <li>Apache Cocoon</li>
                    <p>La fondation Apache propose de nombreux projets open source, Cocoon est l’un des projets les plus sollicités pour ses fonctionnalités de conversion.
						En effet Apache Cocoon utilise la technologie des pipelines pour transmettre des flux XML en fichier HTML, XML, PDF, Text, …
						Cocoon est long à apprendre car il intègre beaucoup de fonctions mais une fois maîtrisé, il permet d’utiliser des fonctionnalités souvent très appréciées au niveau de l’exportation des données notamment.</p>
                    <li>J2SE</li>
                    <p>Selon les différents projets et clients d’Objet Direct, l’approche diffère mais l’utilisation du client riche est très fréquente depuis J2SE 1.2 grâce à Swing.
						Cependant l’utilisation du standard d’IBM : SWT (Standard Widget Toolkit) est de plus en plus solicitée. SWT est plus performant et offre une indéniable richesse de composants.
						Il est cependant dificile de se lancer dans des projets SWT sans en maitriser les principes :</p>
                    <ul>
                        <li>Allocation/restitution de la mémoire manuelle</li>
                        <li>Le garbage collecting n’est plus employé</li>
                        <li>Pas de support de Java 2D, SWT intègre sa propre librairie graphique</li>
                        <li>Utilisation des méthodes dispose() pour la restitution de la mémoire.</li>
                        <li>Pas d’utilisation d’AWT comme couche basse.</li>
                    </ul>
                    <p>Java 2D se repose sur l'open GL &amp; Direct X depuis J2SE 5.0 ce qui améliore considérablement sa rapidité et ses performances.</p>
                    <li>J2EE</li>
                    <p>Les EJB (norme de SUN) restent le point le plus complexe dans un projet d’entreprise.
						Object Direct propose pour cela dans son cursus 5 jours de formation uniquement dédiés aux EJB.
						Un conteneur d'EJB est souvent trop lourd car il propose beaucoup de services dont souvent certains qui sont inutiles pour l'utilisation finale que l'on peut en avoir.
						C’est pour cela que les connecteurs EJB sont davantage à la mode aujourd’hui grâce à ces conteneurs léger.
						L’AOP (Aspect Oriented Programming) est également à l’étude car propose des fonctionnalités (notamment pour la maintenance ou la modularité d’une application) très appréciables. AspectJ est le leader dans ce domaine grâce au principe de tissage de lien.</p>
                </ul>
            </div>
            <div class="subChapter">
                <h3>3.6. La persistance des données</h3>
                <p>La persistance des données est de plus en plus devenu un standard dans les applications devant subir une montée en charge importante.
					Il existe deux grandes approches utilisées :</p>
                <ul>
                    <li>JDO / EJB</li>
                    <p>JDO est une normalisation de Sun Microsystems. Cette approche abstrait au maximum la persistance (elle peut ne pas reposer forcément sur une base de données relationelle).</p>
                    <li>Hibernate</li>
                    <p>Le fondateur d'Hibernate est également à l’origine des EJB 3.0. Ceux-ci se reposeront effectivement sur le framework Hibernate. Hibernate bénéficie d’une communauté et d'une maturité plus importante, Hibernate à rejoint le JBoss Group.
						DAO est l’un des patterns les plus utilisé dans les solutions Hibernate.</p>
                    <p>Hibernate s’occupe de la persistance des données et peut être couplé à Spring pour la gestion des transactions.
						Le chargement des objets persistants se fait par l’intermédiaire de langages de requêtes :</p>
                </ul>
                <ul>
                    <li>JDOQL</li>
                    <li>HQL (Hibernate Query Language) : plus puissant et plus simple que le JDOQL</li>
                </ul>
                <p>Ces langages permettent de faire abstraction du schéma de la base de données et d’obtenir des requêtes dynamiques. Il faut alors procéder au mapping objet/relationnel.
					Les EJB 3, JBoss, Hibernate et JDO sont des technologies convergentes.</p>
            </div>
            <div class="subChapter">
                <h3>3.7. Les points faibles d’une application</h3>
                <p>Pour pouvoir concevoir une application correctement il est nécessaire de se poser la question :
					qu’est-ce qui ne va pas dans notre application ?</p>
                <ul>
                    <li>
                        Beaucoup de code écrit
                        <ul>
                            <li>Code difficilement lisible dans le cas des boucles</li>
                            <li>Mélange HTML et Java</li>
                        </ul>
                    </li>
                    <li>
                        La maintenance n’est pas facile
                        <ul>
                            <li>Impact d’un changement de modèle de données</li>
                            <li>Difficile de croiser changement d’apparence (HTML, CSS) et traitements</li>
                        </ul>
                    </li>
                    <li>
                        Elle n’est pas structurée par couches
                        <ul>
                            <li>Duplication de code d’une page à une autre</li>
                        </ul>
                    </li>
                    <li>
                        Réutilisation de pages difficile
                        <ul>
                            <li>Dans le même projet</li>
                            <li>Dans un autre projet</li>
                        </ul>
                    </li>
                    <li>
                        Navigation confuse
                        <ul>
                            <li>Chaque page référence nominativement d’autres pages</li>
                        </ul>
                    </li>
                </ul>
            </div>
            <div class="subChapter">
                <h3>3.8. Contacts</h3>
                <ul>
                    <li>Animateur de la conférence : M. Alexis AGAHI</li>
                    <li>Support de présentation réalisé par M. Alexis AGAHI, Henri DARMET et Alain DELAFOSSE</li>
                    <li>
                        Site Internet :
                        <a href="http://www.objetdirect.com/html/index.html" target="_blank">http://www.objetdirect.com/html/index.html</a>
                    </li>
                </ul>
            </div>
        </div>
    </body>
</html>

